1. Field of the Invention
This invention relates generally to real time server systems and processes and more specifically to systems and processes for delivering video streams to client locations.
2. Description of the Related Art
With improvements in data storage, retrieval and compression technology, the use of real time server systems generally and video on demand systems in particular is becoming widespread. Video on demand applications include content distribution in hospitality establishments (i.e., hotels, motels, condominiums, and hospitals), karaoke (usually involving playback of a sound recording sometimes accompanied with a playback of visual information) and information kiosks. Video on demand systems store a selection of video files, (generally each corresponding to a movie, a short informational presentation or any other type of video content) and they retrieve (i.e. playback) a selected video file under user control. Thus, using a video on demand system, a user or multiple users, through a client network, select and then access (i.e. "playback") a video file. Further, conventional video on demand systems generally offer users a variety of control functions, similar to those found on a conventional video cassette recorder (VCR) such as PLAY, STOP, PAUSE, REWIND, and FAST FORWARD. It should be understood that as used herein, the term "video" includes content having both audio and visual portions or exclusively audio or exclusively visual content, as well as other types of digital content.
The channel requirements (i.e. the number of video streams supplied by the server) for video on demand systems vary with the specific video on demand application. A large hotel, for example, will require a greater number of channels than a small one or, information kiosks may have a greater or lesser number of clients to service based on the kiosk location and the type of information being provided by the kiosk. Additionally, video on demand systems are sometimes installed in locations which demand increased channel capacity over time. For example, systems installed in hospitality establishments (i.e. hotels, motels, condominiums and hospitals) may initially service a smaller number of rooms or units, but as facility size is increased, or as consumers gain awareness of the service, demand on the system increases. This problem is perhaps even more prevalent in other application areas, such as information kiosks, where the physical infrastructure required to provide additional client locations is not prohibitive.
Further, video on demand systems have varying video storage requirements based on the particular application. Hospitality establishments, for example, generally want to offer a large selection of feature length video movies and thus have fairly high storage requirements. Information kiosks, on the other hand, tend to have much smaller storage requirements, particularly if the information content is short as compared to feature length movies.
Many conventional video on demand systems have a fixed and high cost architecture. In particular, some conventional video on demand systems use a high-end work station or a particularly high speed computer in order to obtain real-time delivery of multiple video streams. Other conventional video on demand systems employ a computer equipped with multiple processors for event multi-tasking in order to meet the processing demand of delivering multiple video streams. These conventional systems are generally quite costly because they use high-end and/or specialized hardware. These conventional systems have the additional drawback that they are generally designed to accommodate a specified maximum number of video streams and are not able to easily expand beyond that capacity.
It is desirable to have a single low cost video on demand system that is modular to meet the varied requirement of various video on demand applications and which is capable of being expanded to meet the growing needs of an individual server location.
Thus, there is a need for a modular, expandable and cost effective method and process to deliver a large number of video and other digital data streams in parallel.
Further, one important component of video on demand systems in particular, and in computing systems generally, is its mass storage component. In the video server (video on demand) context, the mass storage component stores video content. In other types of computing systems, the mass storage component stores other types of digital content such as computer programs, databases, images, data and the like. Regardless of whether the particular application is in a video on demand system or another type of computer system, the size, speed and cost of the mass storage component impact system specification, performance and costs.
One conventional mass storage architecture uses a redundant array of inexpensive disk drives (RAID). These architectures conventionally use an array of drives that are typically smaller, less expensive and less reliable than some high performance, larger and more costly disk drives conventionally available. Some of these conventional RAID systems employ striping wherein a data object is divided into "data stripes" and the data stripes are then interleaved onto an array of disks to achieve improved performance through parallel disk operations. Additionally, each data stripe is sometimes further subdivided into data blocks sized to facilitate disk access. Generally, conventional disk arrays incorporate redundancy in the form of mirroring or a parity-based mechanism in order to obtain increased reliability.
Specifically, conventional RAID level 1 uses mirroring while some higher level conventional RAID systems use a parity block for error correction. The parity block is conventionally generated by exclusive ORing data blocks across a single stripe slice (i.e., across the disk array). Conventionally, each parity block is stored on a different disk than its associated data stripe. Thus, in the event of a disk failure, the data block stored on the failed disk is reconstructed using the parity block (by exclusive ORing the corresponding parity block with all other data blocks within the data stripe slice).
Thus, in a RAID system with N disks, when one disk fails, it requires reading N-1 data blocks from N-1 disks in order to reconstruct one missing data block. Although the N-1 disk read operations may be performed in parallel to reduce the response time if the subsystem performance load allows, it still adds a substantial burden to the performance load when such failure happens. The greater the number of disks (N) in the system, the worse the performance penalty is during failure mode. Therefore, in order to limit the performance penalty, it is desirable to limit the number of disks (N) to a relatively low number.
On the other hand, in order to gain high performance throughput of a RAID subsystem, it is desirable to have a large number of disks (N) during normal data access so that a large number of disk operations can be performed in parallel. This aspect is in conflict with a small N desirable in the failure mode. Thus, there is a need for a RAID system and method that enhances system reliability and performance without introducing unacceptably large performance penalties during a failure mode.